package com.cloudbroker.bcs.platform.ltb.bizapi.service.transaction;

import com.cloudbroker.bcs.common.annotation.CreditsOper;
import com.cloudbroker.bcs.common.annotation.NoLogin;
import com.cloudbroker.bcs.common.constants.type.BusinessType;
import com.cloudbroker.bcs.common.entity.HSBCPSBackVO;
import com.cloudbroker.bcs.csvc.lightinvesting.api.vo.request.fansRelated.CombSubscribeCancelForm;
import com.cloudbroker.bcs.csvc.lightinvesting.api.vo.response.*;
import com.cloudbroker.bcs.platform.ltb.bizapi.service.transaction.back.*;
import com.cloudbroker.bcs.platform.ltb.bizapi.service.transaction.vo.*;

/**
 * Created by tianrui on 2016/7/22.
 */
public interface CombineBizService {

    /**
     * 组合申请
     */
    CombineApplyBack CombineApply(CombineCreateForm form);

    /**
     * 组合关注
     */
    @CreditsOper(type= BusinessType.FOCUS_COMBINE)
    HSBCPSBackVO CombineFocus(CombineFocusForm form);

    /**
     * 组合关注取消
     */
    HSBCPSBackVO CombineFocusCancel(CombineFocusForm form);

    /**
     * 组合概要信息查询
     */
    @NoLogin
    CombineSummaryList CombineSummaryQuery(CombineSummaryQryForm form);

    /**
     * 组合排名
     *
     * @param form
     * @return
     */
    @NoLogin
    CombRankQryBackVo comb_rank(CombineRankForm form);

    /**
     * 组合搜索
     *
     * @param form
     * @return
     */
    @NoLogin
    CombineSearchList CombineSearch(CombineMidSearchForm form);

//    /**
//     * 组合委托
//     * @param form
//     * @return
//     */
//    CombEntrustVo comb_entrust_add(MiddleCombEntrustForm form);
    @NoLogin
    MiddleCombineBasicInfoList combineBasicInfo(CombineMidBasicInfoform form);

//    //投顾模糊搜索
    @NoLogin
    ExtcomacctVagueQryList func_extcomacct_vague_qry(ExtcomacctVagueForm form);

    /**
     * 组合委托
     */
    @CreditsOper(type = BusinessType.COMB_ENTRUST)
    public CombEntrustVo func_comb_entrust_add( CombEntrustTransForm param);

    /**
     * 组合关注，即领投宝的组合订阅
     */
    @CreditsOper(type = BusinessType.SUBSCRIBE)
    public CombSubscribeVo func_combine_focus(CombSubscribeTransForm param);

    /**
     * 投顾收藏，即领投宝的投顾关注
     */
    @CreditsOper(type = BusinessType.FOCUS_LEADER)
    public InterestFocusVo func_focus_interest_add(FocusInterestByTransForm param);


    SubscriptionCombineQryBackVo func_comb_subscription(MiddleSubscriptionCombineForm form);

    CombSubscribeCancelVo func_combine_focus_cancel(MiddleCombSubscribeCancelForm form);
}
